//
//  AppDelegate.swift
//  CLWeiBo
//
//  Created by 程雷 on 15/6/24.
//  Copyright © 2015年 程雷. All rights reserved.
//

import UIKit
import AFNetworking

/// 全局变量记录用户账号信息，只加载一次用户账号，后续再获取 token，就不再需要去磁盘加载
/// 执行时机，在需要的时候，才会执行，并不是程序一启动就会执行！
/// 放在 @UIApplicationMain 上面
var sharedUserAccount = UserAccount.loadAcount()
//切换根控制器的通知
let CLSwitchVCNotification = "CLSwitchVCNotification"

// @UIApplicationMain 表示程序的入口， swift中没有 main.m
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // 打印归档保存的信息
        print(sharedUserAccount)
        // 设置外观
        setupAppreance()
        //设置网络
        setupNetWork()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        window?.rootViewController = defualtViewController()
        window?.makeKeyAndVisible()
        
        //注册通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchViewController:", name: CLSwitchVCNotification, object: nil)
        
        return true
    }
    // 注销通知
    deinit{
        NSNotificationCenter.defaultCenter().removeObserver(self, name: CLSwitchVCNotification, object: nil)
    }
    
    
    //切换控制器
    func switchViewController(n:NSNotification){
        // 判断 object 是否为true 如果是 显示 MainViewController
        let isMainVC = n.object as! Bool
        window?.rootViewController = isMainVC ? MainViewController():WelcomeViewController()
    }
    
    //判断加载的默认控制器
    private func defualtViewController()->UIViewController
    {
        // 1.判断用户是否登录
        if sharedUserAccount != nil
        {
            //如果登录，判断是否有新版本
            return isNewUpdate() ? NewFeatureViewController():WelcomeViewController()
        }
        return MainViewController()
    }
    
    
    
    ///  检查时候有新的版本
    ///
    ///  :returns: 如果有新的版本返回值为真
    private func isNewUpdate() ->Bool{
    
        // 1.获取当前应用的版本
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        
        let version = Double(currentVersion)!
        
        // 2.获取应用程序之前的版本，从用户偏好中获取
        let versionKey = "versionKey"
        let sandBoxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(versionKey)
        // 3.将当前版本写入控制器
        NSUserDefaults.standardUserDefaults().setDouble(version, forKey: versionKey)
        
        return version > sandBoxVersion
    }
    // 设置网络
    private func setupNetWork() {
        //设置网络指示器
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        //设置网络缓存
        let urlCache = NSURLCache(memoryCapacity: 4*1024*1024, diskCapacity: 20*1024*1024, diskPath: nil)
        NSURLCache.setSharedURLCache(urlCache)
    }
    
    private func setupAppreance() {
        // 设置外观,一经设置全局有效
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
    }

}

